-- species plus their data
species = {
    { "H+",      1, nil     },
    { "HO-",    -1, nil     },
    { "K+",      1, "SP_K"  },
    { "Na+",     1, "SP_Na" },
    { "Cl-",    -1, "SP_Cl" },
    { "HCO3-",  -1, nil     },
    { "CO3--",  -2, nil     },
    { "HY",      0, nil     },
    { "Y-",     -1, nil     }
    };
    
-- equilibria


K_Henry = 29.41;   -- atm/(mol/L)

K1      = 4.45e-7;  
K2      = 5.6e-11;


function P_CO2(t)
	local  P0    = 40.0;
    return P0/760.0;
end

function kappa(t)
        local  CO2_aq = P_CO2(t) / K_Henry;
        return CO2_aq * K1;
end


equilibria =
{
    { "water",  1e-14,      { 1, "H+"}, {1, "HO-" } },
    { "bicarb", "kappa",    {  1, "H+" }, { 1, "HCO3-"} },
	{ "carb",   K2,         {  1, "H+" }, { 1, "CO3--"}, { -1, "HCO3-" } },
    { "buffer", 10^(-6.2),  {  1, "H+" }, { 1, "Y-" },   { -1, "HY"    } }
};

-- initializer
initIn = 
{
    { 10^(-7.2),   { 1, "H+" } },
    { 140e-3,      { 1, "K+"  } },
	{ 10e-3,       { 1, "Na+" } },
	{ 20e-3,       { 1, "Cl-" } },
    { 0.0,         { 1, "HY"  }, { 1, "Y-" } }
}

function potassium(t)
    return 4e-3 + 10e-3 * smooth_bump(t,60,30,60,30);
end

initOut = 
{
    { 10^(-7.4),    { 1, "H+" } },
    { 4e-3,         { 1, "K+"  } },
	{ 140e-3,       { 1, "Na+" } },
	{ 100e-3,       { 1, "Cl-" } },
    { 0.0,         { 1, "HY"  }, { 1, "Y-" } }
}



function P_CO2(t)
     return ( 40 + 30 * math.sin(6.14 * t / 30)* math.exp( -t/10 ))/760.0;
end

function P_CO2(t)
    local P0=40/760;
    return P0 + 0 * smooth_bump(t,60,30,120,45);
end
